package com.woniu.teachmall.mapper;

import com.woniu.teachmall.entity.Goods;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;

/**
 * 商品数据访问接口
 * 提供商品信息的增删改查及库存操作
 */
@Mapper
public interface GoodsMapper {
    /**
     * 获取全部商品列表
     * @return 包含所有商品的集合（未分页）
     */
    List<Goods> selectAll();

    /**
     * 查询所有最新商品
     * @return 按最新排序的商品集合
     */
    List<Goods> selectAllNew();

    /**
     * 分页查询商品信息
     * @param offset 起始位置
     * @param pageSize 每页记录数
     * @param searchName 商品名称搜索条件（模糊匹配）
     * @return 分页后的商品集合
     */
    List<Goods> selectByPage(
            @Param("offset") int offset,
            @Param("pageSize") int pageSize,
            @Param("searchName") String searchName);

    /**
     * 获取商品总记录数
     * @param searchName 商品名称搜索条件（模糊匹配）
     * @return 符合条件的总记录数
     */
    long count(@Param("searchName") String searchName);

    /**
     * 根据商品ID查询商品详情
     * @param id 商品唯一标识
     * @return 对应商品实体
     */
    Goods findById(int id);

    /**
     * 减少商品库存数量
     * @param goodid 商品ID
     * @param num 减少的库存数量
     */
    void reduceStock(
            @Param("goodid") Integer goodid,
            @Param("num") Integer num);

    /**
     * 新增商品信息
     * @param goods 商品实体对象
     */
    void insertGoods(Goods goods);
}